package top.lfyao.designpattern.details.builder.example;


/**
 * 构建器后面隐藏了对象构造的复杂性，内部静态类接受链接方法的调用。
 * 在Spring中，我们可以在org.springframework.beans.factory.support.BeanDefinitionBuilder类中检索这个逻辑。这是一个允许我们以编程方式定义bean的类。我们可以在关于bean工厂后处理器的文章中看到它，BeanDefinitionBuilder包含几个方法，它们为AbstractBeanDefinition抽象类的相关实现设置值，比如作用域，工厂方法，属性等。
 */
public class ProgrammerTest {
    public static void main(String[] args) {

        Programmer programmer = new Programmer.ProgrammerBuilder()
                .setFirstName("F").setLastName("L")
                .setCity("City").setZipCode("0000A").setAddress("Street 39")
                .setLanguages(new String[]{"bash", "Perl"})
                .setProjects(new String[]{"Linux kernel"}).build();
        System.out.println(programmer.toString());
    }
}
